package com.youzan.open.sdk.gen.v1_0_1.model;

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Maps;
import com.google.common.collect.Multimap;
import com.youzan.open.sdk.model.APIParams;
import com.youzan.open.sdk.model.ByteWrapper;
import com.youzan.open.sdk.model.FileParams;
import java.util.List;
import java.util.Map;
import java.util.Date;

public class YouzanPayAcctransBillDetailGetListParams implements APIParams, FileParams  {

    /**
     * 账户类型
     */
    private Long accountType;
    /**
     * 开始时间，单位为秒
     */
    private Long beginTime;
    /**
     * 结束时间，单位为秒
     */
    private Long endTime;
    /**
     * 收支记录类型
     */
    private Long inoutLogType;
    /**
     * 收支记录类型list
     */
    private String inoutLogTypes;
    /**
     * 外部业务号，例如订单号
     */
    private String outBizNo;
    /**
     * 分页编号
     */
    private Long pageNo;
    /**
     * 分页大小
     */
    private Long pageSize;
    /**
     * 商户号
     */
    private String partnerId;

    public void setAccountType(Long accountType) {
        this.accountType = accountType;
    }

    public Long getAccountType() {
        return this.accountType;
    }

    public void setBeginTime(Long beginTime) {
        this.beginTime = beginTime;
    }

    public Long getBeginTime() {
        return this.beginTime;
    }

    public void setEndTime(Long endTime) {
        this.endTime = endTime;
    }

    public Long getEndTime() {
        return this.endTime;
    }

    public void setInoutLogType(Long inoutLogType) {
        this.inoutLogType = inoutLogType;
    }

    public Long getInoutLogType() {
        return this.inoutLogType;
    }

    public void setInoutLogTypes(String inoutLogTypes) {
        this.inoutLogTypes = inoutLogTypes;
    }

    public String getInoutLogTypes() {
        return this.inoutLogTypes;
    }

    public void setOutBizNo(String outBizNo) {
        this.outBizNo = outBizNo;
    }

    public String getOutBizNo() {
        return this.outBizNo;
    }

    public void setPageNo(Long pageNo) {
        this.pageNo = pageNo;
    }

    public Long getPageNo() {
        return this.pageNo;
    }

    public void setPageSize(Long pageSize) {
        this.pageSize = pageSize;
    }

    public Long getPageSize() {
        return this.pageSize;
    }

    public void setPartnerId(String partnerId) {
        this.partnerId = partnerId;
    }

    public String getPartnerId() {
        return this.partnerId;
    }


    public Map<String, Object> toParams() {
        Map<String, Object> params = Maps.newHashMap();
        if (accountType != null) {
            params.put("account_type", accountType);
        }
        if (beginTime != null) {
            params.put("begin_time", beginTime);
        }
        if (endTime != null) {
            params.put("end_time", endTime);
        }
        if (inoutLogType != null) {
            params.put("inout_log_type", inoutLogType);
        }
        if (inoutLogTypes != null) {
            params.put("inout_log_types", inoutLogTypes);
        }
        if (outBizNo != null) {
            params.put("out_biz_no", outBizNo);
        }
        if (pageNo != null) {
            params.put("page_no", pageNo);
        }
        if (pageSize != null) {
            params.put("page_size", pageSize);
        }
        if (partnerId != null) {
            params.put("partner_id", partnerId);
        }
        return params;
    }

    public Multimap<String, ByteWrapper> toFileParams() {
        Multimap<String, ByteWrapper> params = ArrayListMultimap.create();

            return params;
    }


}